home *** CD-ROM | disk | FTP | other *** search
/ ShareWare OnLine 2 / ShareWare OnLine Volume 2 (CMS Software)(1993).iso / os2 / os2cop20.zip / OS2COPY.CMD < prev    next >
OS/2 REXX Batch file  |  1993-04-01  |  11KB  |  314 lines

  1. /*
  2. ┌───────────────────────────────────────────────────────────────────────┐
  3. │ OS2Copy.CMD v. 2.01  part 1 of 2.                                     │
  4. │ REXX script to copy OS/2 HPFS or FAT BootManager system,              │
  5. │ from one drive letter to another  eg. from D: to E:,                  │
  6. │ from FAT to FAT, HPFS to HPFS, part 1.                                │
  7. │                                                                       │
  8. │ Documentation is found in the file OS2COPY.DOC                        │
  9. │                                                                       │
  10. │ Copyright (C): John Ståhle                                            │
  11. │                289A Buddinge Hovedgade                                │
  12. │                DK-2880 Bagsværd                                       │
  13. │                Denmark, Europe                                        │
  14. │                Phone +45 44 98 66 18                                  │
  15. │                                                                       │
  16. │ Disclaimer, warning and what not:                                     │
  17. │ !! NO responsibility or any other obligation you can ever think of    │
  18. │    is assumed, honored or anything else.                              │
  19. └───────────────────────────────────────────────────────────────────────┘
  20. */
  21. /*───────────────────────────────────────────────────────────────────────*/
  22. Call RxFuncAdd SysLoadFuncs, RexxUtil, SysLoadFuncs
  23. CALL SysLoadFuncs
  24.  
  25. PARSE UPPER Arg all_args
  26.  
  27. '@ECHO OFF'
  28. CALL SysCls
  29. CALL Startmeddelelse
  30. CALL FindFiler
  31. CALL GetYesNo
  32. CALL SysCls
  33.  
  34. CALL HentParametre
  35. CALL SysCls
  36. IF (FromDrive==ToDrive) THEN DO
  37.    SAY 'FromDrive ('FromDrive') is the same as ToDrive ('ToDrive') NO GO!'
  38.    'PAUSE'
  39.    CALL SysCls
  40.    CALL HentParametre
  41.    IF (FromDrive==ToDrive) THEN EXIT
  42.    CALL SysCls
  43. END
  44.  
  45. CALL Kopimeddelelse
  46. IF (OK \= YesLetter) THEN EXIT
  47. CALL SysCls
  48.  
  49. /* Here goes */
  50.  
  51. CALL CreateStartupFile
  52. CALL FdiskMsg
  53. 'Pause'
  54.  
  55. 'FDISK'
  56.  
  57. CALL KaldOS2Copy2
  58.  
  59. EXIT
  60.  
  61. /*───────────────────────────────────────────────────────────────────────*/
  62.  
  63. Startmeddelelse:
  64.  SAY '┌────────────────────────────────────────────────────────────────────────┐'
  65.  SAY '│ OS2Copy.1 v.2.01 Beta, Copyright John Ståhle(C)                        │'
  66.  SAY '│                                                                        │'
  67.  SAY '│ !!! No other process may be active while this job is running !!!       │'
  68.  SAY '│                                                                        │'
  69.  SAY '│ You will get messages telling that OS2.INI, OS2SYS.INI and SWAPPER.DAT │'
  70.  SAY "│ can NOT be copied (this is during the XCOPY part) - don't worry,       │"
  71.  SAY '│ these files will be copied and edited later in the process.            │'
  72.  SAY '├────────────────────────────────────────────────────────────────────────┤'
  73.  SAY '│             Press Control C  to STOP  - or                             │'
  74.  SAY '└────────────────────────────────────────────────────────────────────────┘'
  75.  SAY 
  76.  'PAUSE'
  77. RETURN
  78.  
  79. /*.......................................................................*/
  80.  
  81. FindFiler:
  82.    
  83.    CopyFil = 'OS2COPY2.CMD'
  84.    Os2Copy2Fil = SysSearchPath('PATH',CopyFil)
  85.    IF (Os2Copy2Fil=='') then DO
  86.       NoFileName = CopyFil
  87.       CALL FileNotThere
  88.       EXIT
  89.    END
  90.  
  91.    CInitExe = 'InitEdit.EXE'
  92.    InitEditExe = SysSearchPath('PATH',CInitExe)
  93.    IF (InitEditExe=='') then DO
  94.       NoFileName = CInitExe
  95.       CALL FileNotThere
  96.       EXIT
  97.    END
  98.  
  99.    YNFile = 'YesNo.LNG'
  100.    YesNoFile = SysSearchPath('PATH',YNFile)
  101.    IF (YesNoFile=='') then DO
  102.       NoFileName = YNFile
  103.       CALL FileNotThere
  104.       EXIT
  105.    END
  106.    
  107.    CListe = 'InitEdit.Lst'
  108.    CInitList = SysSearchPath('PATH',CListe)
  109.    IF (CInitList=='') then DO
  110.       NoFileName = CListe
  111.       CALL FileNotThere
  112.       EXIT
  113.    END
  114.  
  115.    FraDrev = SUBSTR(DIRECTORY(),1,2)
  116.    InitFil = LineIn(CInitList,1,1)
  117.    DO WHILE InitFil  \=  '>INIT_FILES'
  118.       InitFil = LineIn(CInitList)
  119.    END
  120.    InitFil = LineIn(CInitList)
  121.    DO WHILE ((InitFil \= '>BIN_FILES') & (LEFT(InitFil,1)=='\'))
  122.       IndIni    = Substr(InitFil,2,LENGTH(InitFil)-1)
  123.       CInitTest = SysSearchPath('PATH',IndIni)
  124.       IF (CInitTest=='') then DO
  125.          NoFileName = IndIni
  126.          CALL FileNotFound
  127.       END
  128.       InitFil = LineIn(CInitList)
  129.    END
  130.    CALL LineOut(CInitList)
  131.    DROP CInitList
  132. RETURN
  133.  
  134. /*.......................................................................*/
  135.  
  136. FileNotThere:
  137.    SAY '┌───────────────────────────────────────────────────────────────────┐'
  138.    SAY '│' NoFileName' was >> NOT <<  found in your path'
  139.    SAY '│' NoFileName' is crucial for the success of this procedure'
  140.    SAY '│ !!! Path to 'NoFileName' must be included in your Config.Sys   !!!'
  141.    SAY '│ !!! Path to 'NoFileName' must be included in your Autoexec.Bat !!!'
  142.    SAY '└───────────────────────────────────────────────────────────────────┘'
  143. RETURN
  144.  
  145. /*.......................................................................*/
  146.  
  147. FileNotFound:
  148.    SAY '┌─────────────────────────────────────────────────────────────────┐'
  149.    SAY '│ 'NoFileName' was >> NOT <<  found in your path'
  150.    SAY '│                                                                 │'
  151.    SAY '│ Place this (and the other files listed in 'CInitList')    │'
  152.    SAY '│ in your PATH - or make sure these files are not needed          │'
  153.    SAY '│ for your setup, in which case you must remove them from         │'
  154.    SAY '│ 'CInitList' (a file like PMDIARY.INI may not be in use)   │'
  155.    SAY '│                                                                 │'
  156.    SAY '│ You can start another thread and make the changes now.          │'
  157.    SAY '└─────────────────────────────────────────────────────────────────┘'
  158.    'PAUSE'
  159. RETURN
  160.  
  161. /*.......................................................................*/
  162.  
  163. GetYesNo:
  164.    YesNo = ' '
  165.    DO WHILE (SubStr(YesNo,2,1) \= '/')
  166.       YesNo = LineIn(YesNoFile)
  167.    END
  168.    YesLetter = SubStr(YesNo,1,1)
  169.    NoLetter  = SubStr(YesNo,3,1)
  170.    IF (YesLetter == ' ') THEN YesLetter = 'Y'
  171.    IF (NoLetter  == ' ') THEN NoLetter  = 'N'
  172.    CALL LineOut(YesNoFile)
  173. RETURN
  174. /*.......................................................................*/
  175.  
  176. HentParametre:
  177. ArgNo = 1
  178. IF (word(all_args,ArgNo)=='') THEN DO
  179.   SAY 'OS2Copy <FromDrive>: [<ToDrive>:]'
  180.   SAY
  181.   SAY ' <FromDrive>:        Partition with OS/2 installed.'
  182.   SAY 
  183.   SAY ' <ToDrive>:          Partition OS/2 is to be copied to,'
  184.   SAY '                     OPTIONAL in this script.'
  185.   SAY 
  186. END
  187.  
  188. CALL HentFraParametre
  189. CALL HentTilParametre
  190.  
  191. RETURN
  192.  
  193. /*.......................................................................*/
  194.  
  195. HentFraParametre:
  196.    k=SysCurPos()
  197.    FromDrive=word(all_args,ArgNo)
  198.    DO WHILE (FromDrive=='')
  199.       CALL SysCurPos word(k,1), 0
  200.       SAY 'Partition to copy OS/2 system FROM (X:) ?'
  201.       CALL SysCurPos word(k,1), 48
  202.       PULL FromDrive
  203.    END
  204.    IF (SUBSTR(FromDrive,2,1)<>':') THEN FromDrive = FromDrive':'
  205. RETURN
  206.  
  207. /*.......................................................................*/
  208. HentTilParametre:
  209.    ArgNo   = ArgNo + 1
  210.    ToDrive = word(all_args,ArgNo)
  211.    k       = SysCurPos()
  212.    IF (ToDrive=='') THEN DO
  213.       CALL SysCurPos word(k,1), 0
  214.       SAY 'Partition to copy your OS/2 system TO (X:) ?'
  215.       SAY '(OPTIONAL in this script).'
  216.       CALL SysCurPos word(k,1), 48
  217.       PULL ToDrive 
  218.    END
  219.  
  220.    IF (ToDrive\='') THEN DO
  221.       IF (SUBSTR(ToDrive,2,1)<>':') THEN DO
  222.          ToDrive = ToDrive':'
  223.       END
  224.    END
  225.    IF (ToDrive == '') THEN ToDrive  = ' '
  226.    
  227.    CALL SysCurPos word(k,1), 0
  228.    SAY 'Partition to copy OS/2 system   TO = 'ToDrive
  229. RETURN
  230.  
  231. /*.......................................................................*/
  232.  
  233. Kopimeddelelse:
  234.    SAY '┌─────────────────────────────────────────┐'
  235.    SAY '│ Copying OS/2 FROM 'FromDrive'                    │'
  236.    SAY '└─────────────────────────────────────────┘'
  237.    IF (ToDrive\='') THEN DO
  238.       SAY '┌─────────────────────────────────────────┐'
  239.       SAY '│ Copying OS/2   TO 'ToDrive'                    │'
  240.       SAY '└─────────────────────────────────────────┘'
  241.    END
  242.    k=SysCurPos()
  243.    DO WHILE ((OK<>YesLetter) & (OK<>NoLetter))
  244.       CALL SysCurPos word(k,1),0
  245.       SAY '┌─────────────────────────────────────────┐'
  246.       SAY '│ Are you sure ('YesNo') ?                    │'
  247.       SAY '└─────────────────────────────────────────┘'
  248.       CALL SysCurPos word(k,1)+1,24
  249.       PULL OK
  250.    END
  251. RETURN
  252.  
  253. /*.......................................................................*/
  254.  
  255. CreateStartupFile:
  256.  
  257.    SAY '┌────────────────────────────────────────────────────────────┐'
  258.    SAY '│ SYSxxxx: The system cannot find the file specified.        │'
  259.    SAY '│                     is  OK                                 │'
  260.    SAY '└────────────────────────────────────────────────────────────┘'
  261.  
  262.    FromDrive
  263.  
  264.    'DEL 'FromDrive'StartUp.@#@'
  265.    'REN 'FromDrive'\Startup.Cmd StartUp.@#@'
  266.    StartFile=FromDrive'\Startup.Cmd'
  267.    CALL lineout StartFile, '@Echo OFF',1
  268.    IF (Todrive\=' ') THEN DO
  269.       CALL lineout StartFile, 'OS2Copy2 'FromDrive' 'Todrive' 'CInitList
  270.    END
  271.    ELSE DO
  272.       CALL lineout StartFile, 'OS2Copy2 'FromDrive
  273.    END
  274.    CALL lineout StartFile, 'EXIT'
  275.    k=lineout(StartFile)
  276.    DROP StartFile
  277. RETURN
  278.  
  279. /*.......................................................................*/
  280.  
  281. KaldOS2Copy2:
  282.    IF (Todrive\=' ') THEN DO
  283.       CALL OS2Copy2' 'FromDrive' 'Todrive' 'CInitList
  284.    END
  285.    ELSE DO
  286.       CALL  OS2Copy2' 'FromDrive
  287.    END
  288. RETURN
  289.  
  290. /*.......................................................................*/
  291.  
  292. FdiskMsg:
  293.    SAY
  294.    SAY '┌────────────────────────────────────────────────────────────┐'
  295.    SAY '│ SYSxxxx: The specified disk or diskette cannot be accessed │'
  296.    SAY '│                           is  OK                           │'
  297.    SAY '└────────────────────────────────────────────────────────────┘'
  298.    SAY
  299.    SAY '┌────────────────────────────────────────────────────────────┐'
  300.    SAY '│ Now starting FDISK                                         │'
  301.    SAY '│ IF you are copying TO disk 1 of another computer then      │'
  302.    SAY '│    Remember to create 'ToDrive' as a PRIMARY partition            │'
  303.    SAY '│ ELSE if you are copying from one partition to another      │'
  304.    SAY '│    Remember to create 'ToDrive' as a LOGICAL partition            │'
  305.    SAY '│                                                            │'
  306.    SAY '│ Insert the partition you created in BootManager            │'
  307.    SAY '├────────────────────────────────────────────────────────────┤'
  308.    SAY '│             Press Control C  to STOP  - or                 │'
  309.    SAY '└────────────────────────────────────────────────────────────┘'
  310.    SAY
  311. RETURN
  312.  
  313. /*───────────────────────────────────────────────────────────────────────*/
  314.